# 最小RISC-V启动汇编代码
.section .text
.global _entry

_entry:
    # 1. 设置栈指针
    la sp, stack_top
    
    # 调试：输出字符'S'表示启动成功
    li t0, 0x10000000     # UART基地址
    li t1, 'S'
    sb t1, 0(t0)
    
    # 2. 清零BSS段
    la t0, sbss           # BSS段起始
    la t1, ebss           # BSS段结束
    bgeu t0, t1, clear_bss_done

clear_bss:
    sd zero, (t0)         # 存储0到当前地址
    addi t0, t0, 8        # 移动到下一个双字
    bltu t0, t1, clear_bss # 继续直到结束

clear_bss_done:
    # 调试：输出字符'B'表示BSS清零完成
    li t1, 'B'
    sb t1, 0(t0)
    
    # 3. 跳转到C主函数
    call main
    
    # 4. 主函数返回后的处理（死循环）
halt:
    j halt

# 栈空间定义（4KB）
.section .bss
.align 4
stack_bottom:
    .space 4096
stack_top:
